Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

252
Views
"Error de sintaxis no detectado: token l inesperado en JSON en la posición 0", pero aún funciona, ¿por qué?

Primera vez que uso websockets con Go y obtengo un error extraño que no interrumpe el programa, y aún continúa como si no fuera un problema. El cliente es una aplicación de página única de ReactJS.

Cliente JS:

 const socket = new WebSocket("ws://localhost:5000/ws"); setConnection(socket); socket.onmessage = (e) => { const message = JSON.parse(e.data) console.log("message:", message) switch (message.Command) { case "loginResult": if (message.Result) { console.log("login worked"); }else{ console.log("login did not work"); } break; } }

Fragmento de Go está obteniendo JSON de:

 result := ws.LoginResult{ BaseMessage: ws.BaseMessage{ Command: "loginResult", }, Result: false, } b, err := json.Marshal(result) if err != nil { fmt.Println(err) return } if err = conn.WriteMessage(msgType, b); err != nil { return }

Y la salida:

 in here WebsocketProvider.tsx:20 message: {Command: 'loginResult', Result: false} WebsocketProvider.tsx:27 login did not work VM3502:1 Uncaught SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at WebSocket.socket.onmessage (WebsocketProvider.tsx:19) socket.onmessage @ WebsocketProvider.tsx:19

¿Alguien tiene alguna idea de por qué este es el caso?

Se encontró la solución:

  • Tenía que ver con la migración del código y que una línea sobrante estaba haciendo una llamada que se ignoró, por lo tanto, no hizo ninguna diferencia en la ejecución. No tiene nada que ver con que el formato JSON sea diferente, ya que las bibliotecas de Go lo generaron automáticamente.
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

la función que ha escrito para onmessage se ejecutará cada vez que se reciba un mensaje websocket válido .

De acuerdo con el registro de depuración que ha publicado, la parte que funcionó fue cuando recibió JSON válido del servidor y la función se ejecutó hasta su finalización, como lo demuestra esta línea:

 WebsocketProvider.tsx:27 login did not work

Marque el número de línea.

Después de esto obtienes:

 VM3502:1 Uncaught SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at WebSocket.socket.onmessage (WebsocketProvider.tsx:19) socket.onmessage @ WebsocketProvider.tsx:19

marque el número de línea :19 Esta es la línea con su JSON.parse .

Mi conjetura sería que este es un nuevo mensaje json no válido y de hecho entró en pánico aquí y el resto de la función no se ejecutó; el bit que se ejecutó fue un mensaje anterior con json válido .

En cuanto a por qué falló, coloque un archivo console.log antes de su JSON.parse como lo sugiere @emptyhua para ver qué está recibiendo exactamente.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!